#include<bits/stdc++.h>
using namespace std;
int n,m,t,k;
int arr[200005],rarr[200005],ask[200005],x[4],judge[200005][30],anss[50];
string s[30];
void solve(){
    queue<int>q;
    for(int i=1;i<=n;i++)q.push(i);
    anss[0]=1;
    for(int i=1;i<=k;i++){
        int a=q.front();
        q.pop();
        int b=q.front();
        q.pop();
        cout<<"!"<<s[i][0]<<" "<<rarr[b]<<"!";
        if(s[i][0]=='0'&&rarr[a]>=i||s[i][0]=='1'&&rarr[b]<i){
            anss[i]=a;
            q.push(a);
        }
        else{
            anss[i]=b;
            q.push(b);
        }
        for(int j=1;j<s[i].size();j++){
           int a=q.front();
            q.pop();
            int b=q.front();
            q.pop();
            if(s[i][j]=='0'&&rarr[a]>=i||s[i][j]=='1'&&rarr[b]<i)q.push(a);
            else q.push(b);
        }
        cout<<anss[i]<<endl;
    }

}
int main(){
    freopen("arena.in","r",stdin);
   // freopen("arena.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>arr[i];
    for(int i=1;i<=m;i++) cin>>ask[i];
    cout<<n<<endl;
    for(k=0;k==k;k++) if((1<<k)>=n) break;
    for(int i=1;i<=k;i++) cin>>s[i];
    cout<<k<<"!"<<endl;
    cin>>t;
    while(t--){
        cin>>x[0]>>x[1]>>x[2]>>x[3];
        for(int i=1;i<=n;i++) rarr[i]=arr[i]^x[i%4];
        solve();
    }
    fclose(stdin);
    //fclose(stdout);
	return 0;
}
